<?php


namespace app\example\controller;


use app\BaseController;
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;

/**
 * Class Oss
 * 对象存储功能示例
 */
class Oss extends BaseController
{
    // 文件上传至七牛云对象存储示例
    // 文档地址：https://developer.qiniu.com/kodo/1241/php#1
    // composer 命令：composer require qiniu/php-sdk
    public function uploadToQiniu()
    {
        // 使用 thinkphp 提供的方法接收文件，参数名为：file
        $file = request()->file('file');
        if (!$file) {
            halt('请选择文件！');
        }
        // 打印文件信息查看
        // halt($file);

        // 读取对象存储配置
        $accessKey = config('app.qiniuOss.accessKey');
        $secretKey = config('app.qiniuOss.secretKey');
        $bucket = config('app.qiniuOss.bucket');

        // 鉴权
        $auth = new Auth($accessKey, $secretKey);
        // 生成上传 Token
        $token = $auth->uploadToken($bucket);
        // 构建 UploadManager 对象
        $uploadMgr = new UploadManager();

        // 要上传文件的本地路径
        $filePath = $file->getPathname();
        // 上传到存储后保存的文件名（这里使用时间戳作为文件名，严格来说这并不能保证文件名唯一，仅作为示例。）
        $saveName = time(). '.' . $file->getOriginalExtension();
        list($return, $error) = $uploadMgr->putFile($token, $saveName, $filePath);
        if ($error !== null) {
            // 错误，打印错误
            halt($error);
            // 获取具体错误信息
            halt($error->message());
        } else {
            // 成功，打印返回值
            halt($return);
        }
    }
}
